home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / m68k / fbug68k.arc / COLDPORT.C < prev    next >
C/C++ Source or Header  |  1989-09-29  |  5KB  |  206 lines

  1. #include"textdef.h"
  2.  
  3. /* ************************************************************** */
  4. /*
  5. This is the initialization routine. The cold start will come here. 
  6. First the duart is initialized, then the register table for the mpu
  7. registers. Next the symbol, followed by the break, table are
  8. initialized. The mainloop is called and the monitor is off and
  9. running.
  10. */
  11. /* ************************************************************** */
  12.  
  13. main()
  14. {
  15. extern struct breakelem brtable[];
  16. extern struct symbelem symb[];
  17. extern struct regelem mpu[];
  18. extern int asmhandler;
  19. register int i,j,k,l;
  20.  
  21.  
  22.     if (get32(VBRLOC) == 1)
  23.     {
  24.     put32(VBRLOC,0);
  25.     i = 0;
  26.     mpu[i].value = USERPCLOC;
  27.     mpu[i++].name = p_c;
  28.     mpu[i].value = SRSTART;
  29.     mpu[i++].name = s_r;
  30. #if(DEVICE>=68020)
  31.     mpu[i++].name = "=";
  32. #endif
  33.     mpu[i].value = USERUSPLOC;
  34.     mpu[i++].name = usp;
  35. #if(DEVICE<68020)
  36.     mpu[i++].name = "=";
  37. #endif
  38.     mpu[i].value = USERMSPLOC;
  39.     mpu[i++].name = msp;
  40. #if(DEVICE<68020)
  41.     mpu[i].value = USERSSPLOC;
  42.     mpu[i++].name = ssp;
  43. #else
  44.     mpu[i].value = USERISPLOC;
  45.     mpu[i++].name = isp;
  46. #endif
  47.     mpu[i].value = USERVBRLOC;
  48.     mpu[i++].name = vbr;
  49.     j = i;
  50.     mpu[i++].name = cac;
  51.     mpu[i++].name = caa;
  52.     mpu[i++].name = sfc;
  53.     mpu[i++].name = dfc;
  54.     mpu[i++].name = "=";
  55.     mpu[i++].name = d_0;
  56.     mpu[i++].name = d_1;
  57.     mpu[i++].name = d_2;
  58.     mpu[i++].name = d_3;
  59.     mpu[i++].name = d_4;
  60.     mpu[i++].name = d_5;
  61.     mpu[i++].name = d_6;
  62.     mpu[i++].name = d_7;
  63.     mpu[i++].name = "=";
  64.     mpu[i++].name = a_0;
  65.     mpu[i++].name = a_1;
  66.     mpu[i++].name = a_2;
  67.     mpu[i++].name = a_3;
  68.     mpu[i++].name = a_4;
  69.     mpu[i++].name = a_5;
  70.     mpu[i++].name = a_6;
  71.     k=i;
  72. #if(DEVICE<68020)
  73.     mpu[i].value = USERSSPLOC;
  74. #else
  75.     mpu[i].value = USERISPLOC;
  76. #endif
  77.     mpu[i++].name = a_7;
  78. #if(DEVICE==68030)
  79.     mpu[i++].name = "=";
  80.     mpu[i++].name = "=";
  81.     mpu[i].value = 1;
  82.     mpu[i++].name = crp;
  83.     mpu[i++].name = "crpl";
  84.     mpu[i].value = 1;
  85.     mpu[i++].name = srp;
  86.     mpu[i++].name = "srpl";
  87.     mpu[i++].name = "=";
  88.     mpu[i++].name = tc;
  89.     mpu[i++].name = tt_0;
  90.     mpu[i++].name = tt_1;
  91.     mpu[i++].name = mmusr;
  92. #endif
  93. #if(DEVICE==68040)
  94.     mpu[i++].name = "=";
  95.     mpu[i++].name = "=";
  96.     mpu[i].value = 1;
  97.     mpu[i++].name = urp;
  98.     mpu[i++].name = "urpl";
  99.     mpu[i].value = 1;
  100.     mpu[i++].name = srp;
  101.     mpu[i++].name = "srpl";
  102.     mpu[i++].name = tc;
  103.     mpu[i++].name = "=";
  104.     mpu[i++].name = dtt_0;
  105.     mpu[i++].name = dtt_1;
  106.     mpu[i++].name = itt_0;
  107.     mpu[i++].name = itt_1;
  108.     mpu[i++].name = mmusr;
  109. #endif
  110.     l = i;
  111.  
  112. #if(DEVICE==68040 || COPROCESSOR==TRUE)
  113.     mpu[i++].name = "=";
  114.     mpu[i++].name = "=";
  115.     mpu[i].value = 0;
  116.     mpu[i++].name = "FPCR ";
  117.     mpu[i].value = 0;
  118.     mpu[i++].name = "FPSR ";
  119.     mpu[i].value = 0;
  120.     mpu[i++].name = "FPIAR ";
  121.     l = i;
  122.     mpu[i++].name = "=";
  123.     mpu[i++].name = "FP0  ";
  124.     mpu[i++].name = "fp01 ";
  125.     mpu[i++].name = "fp02 ";
  126.     mpu[i++].name = "FP1  ";
  127.     mpu[i++].name = "fp11 ";
  128.     mpu[i++].name = "fp12 ";
  129.     mpu[i++].name = "FP2  ";
  130.     mpu[i++].name = "fp21 ";
  131.     mpu[i++].name = "fp22 ";
  132.     mpu[i++].name = "FP3  ";
  133.     mpu[i++].name = "fp31 ";
  134.     mpu[i++].name = "fp32 ";
  135.     mpu[i++].name = "FP4  ";
  136.     mpu[i++].name = "fp41 ";
  137.     mpu[i++].name = "fp42 ";
  138.     mpu[i++].name = "FP5  ";
  139.     mpu[i++].name = "fp51 ";
  140.     mpu[i++].name = "fp52 ";
  141.     mpu[i++].name = "FP6  ";
  142.     mpu[i++].name = "fp61 ";
  143.     mpu[i++].name = "fp62 ";
  144.     mpu[i++].name = "FP7  ";
  145.     mpu[i++].name = "fp71 ";
  146.     mpu[i++].name = "fp72 ";
  147. #endif
  148.     mpu[i].name = LASTCMD;
  149.  
  150.     for(i=j;mpu[i].name != LASTCMD;i++)
  151.         if(i!=k && i!=k+3 && i!=k+5 && i<=l)
  152.             mpu[i].value = 0;
  153.  
  154.  
  155.     for (i = 0;ROMSYMB[i] != ENDSTR;i++)
  156.         symb[0].name[i] = ROMSYMB[i];
  157.     symb[0].value = ROMLOC;
  158.     for (i = 1;i < MAXSYMBOL;i++)
  159.     {
  160.         symb[i].name[0] = ENDSTR;
  161.         symb[i].value = 0;
  162.     }
  163.  
  164.     for (i = 0,j = 0;i < MAXBR;i++)
  165.     {
  166.         brtable[i].count = -1;
  167.         brtable[i].tempcount = 0;
  168.         brtable[i].address = 0; brtable[i].inst1 = 0;
  169.         brtable[i].inst2 = 0;
  170.     }
  171.  
  172.     for (i = 0x8;i < 0x3fc;i = i + 4)
  173.     {
  174.         put32(USERVBRLOC + i,&asmhandler);
  175.         put32(VBRLOC + i,&asmhandler);
  176.     }
  177.  
  178.     put8(HOST + CRX,0x30);
  179.     put8(HOST + CRX,0x20);
  180.     put8(HOST + CRX,0x10);
  181.     put8(HOST + CSRX,0xbb);
  182.     put8(HOST + MR1X,0x13);
  183.     put8(HOST + MR2X,0x07);
  184.     put8(HOST + CRX,0x05);
  185.     put8(TERMINAL + CRX,0x30);
  186.     put8(TERMINAL + CRX,0x20);
  187.     put8(TERMINAL + CRX,0x10);
  188.     put8(TERMINAL + IVR,0x0f);
  189.     put8(TERMINAL + IMR,0x00);
  190.     put8(TERMINAL + ACR,0x00);
  191.     put8(TERMINAL + CTUR,0x00);
  192.     put8(TERMINAL + CTLR,0x02);
  193.     put8(TERMINAL + OPCR,0x00);
  194.     put8(TERMINAL + CSRX,0xbb);
  195.     put8(TERMINAL + MR1X,0x13);
  196.     put8(TERMINAL + MR2X,0x07);
  197.     put8(TERMINAL + CRX,0x05);
  198.     }
  199.     print("Copyright Motorola Inc. 1989   All Rights Reserved\n");
  200.     print("Fbug68 Monitor/Debugger Version 1.1 - 9/28/89 \n");
  201.     mainloop();
  202. }
  203.  
  204. /* *************************************************************** */
  205.  
  206.